#include<iostream>
#include<string>
#include<vector>

/*
    news....music.#.pop
    分割字符串的思想：
        1. 从0位置开始查找指定字符（分隔符）的位置，找到之后进行分割
        2. 从上次查找到的位置继续向后查找
*/
size_t split(const std::string &str, const std::string &sep, std::vector<std::string> &res){
    size_t pos, idx = 0;
    while(idx < str.size()){
        pos = str.find(sep, idx);
        if(pos == std::string::npos){
            //没找到，从刚刚开始查找的位置截取到末尾
            res.push_back(str.substr(idx));
            return res.size();
        }
    
        if(pos == idx){//两个分隔符之间没有数据
            idx += sep.size();
            continue;
        }

        res.push_back(str.substr(idx, pos-idx));
        idx = pos + sep.size(); 
    }
    return res.size();
}

int main(){
    std::string str = "news....music.#.pop";
    std::vector<std::string> arry;
    int n = split(str, ".", arry);
    for(auto &s : arry){
        std::cout << s << std::endl;
    }
    return 0;
}